package single_design;
/*
单例设计模式-懒汉式（延迟加载模式）
在多线程并发操作的时候，有可能创建出多个对象
 */

public class Demo2 {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    Single2 s = Single2.getInstance();
                    System.out.println(s);
                }
            }).start();
        }
    }
}
class Single2{
    private Single2(){}
    private static Single2 s;
    //什么时候调方法，什么时候new对象

    public static Single2 getInstance(){
        if(s == null){//提高效率
            synchronized (Single2.class){
                if(s == null){//避免产生多个对象
                    s=new Single2();
                }
            }
        }

        return s;
    }

}